/**
 * @Author     :lanbery
 * @e-mail     : lanbery@gmail.com
 * @version    : V1.0
 * @createtime : 2011-11-7-下午06:00:12
 */
package com.lambor.common.dao;

import java.util.List;

import com.lambor.common.mapper.BaseSqlMapper;


/**
 * @about this class :
 * 数据库操作的基类<br>
 * 这个Dao定义了BaseSqlMapper中的方法， 还提供了一个setMapperClass的方法。<br>
 * 目的是在使用这个dao的时候，需要设置一个Mapper的class。<br>
 * 且这个Mapper必须要是BaseSqlMapper或它的子类。<br>
 * 所有的dao都可以用BaseMapperDao来完成CRUD操作即可， 当BaseMapperDao的方法不够用的情况下，<br>
 * 可以在接口中提供SqlSession、SqlSessionTemplate方法， 让底层人员自己扩展所需要的方法。<br>
 * 这里的dao和mapper好像有点冗余， 因为dao和mapper完成的功能都是类似或是相同的。<br>
 * 但是你可以在dao中，同时调用不同的mapper，来完成当前模块的dao所需要的功能。
 * @author           ： lanbery
 * @e-mail           : lanbery@gmail.com
 * @version          : V1.0
 * @modifytime       : 2011-11-7-下午06:00:12
 * @filepath         : SSI-com.lambor.common.dao//BaseMapperDao.java
 *
 */
public interface BaseMapperDao<T> {
	/**
	 * 
	 * @method annotations: 
	 * @creator           : lanbery
	 * @createtime        : 2011-11-13-下午03:45:58 
	 * @param mapperClass            : void
	 * BaseMapperDao.method()
	 *
	 */
    @SuppressWarnings("unchecked")
    public void setMapperClass(Class<? extends BaseSqlMapper> mapperClass);
    /**
     * 
     * @method annotations: 
     * @creator           : lanbery
     * @createtime        : 2011-11-13-下午03:46:20 
     * @return            : BaseSqlMapper<T>
     * BaseMapperDao.method()
     *
     */
    public BaseSqlMapper<T> getMapper();

    /**
     * 
     * @method annotations: 
     * @creator           : lanbery
     * @createtime        : 2011-11-13-下午03:46:30 
     * @param entity
     * @return
     * @throws Exception            : boolean
     * BaseMapperDao.method()
     *
     */
    public T add(T entity) throws Exception;
    
    public boolean edit(T entity) throws Exception;
    
    public boolean remove(T entity)throws Exception;
    
    public T selectOne(T entity)throws Exception;
    
    public List<T> queryLsit(T entity) throws Exception;
    
    public int queryTotalNum(T entity)throws Exception;
  
}
